import inquirer from 'inquirer';
import fs from 'fs';
import path from 'path';

export default async function getPromptQuestions(options) {
  const questions = [
    {
      name: 'projectName',
      message: '请输入项目英文名称：',
      default: options.projectName,
      validate: input => input ? true : '项目名称不能为空'
    },
    {
      name: 'projectChineseName',
      message: '请输入项目中文名称：',
      default: options.projectChineseName
    },
    {
      name: 'targetDir',
      message: '请输入生成工程的目标文件夹地址：',
      default: options.targetDir || process.cwd(),
      validate: (input) => {
        if (fs.existsSync(input)) {
          return true;
        }
        return '输入的文件夹不存在，请重新输入。';
      }
    },
    {
      name: 'projectType',
      type: 'list',
      message: '选择工程类型：',
      choices: async (answers) => {
        const targetDir = answers.targetDir;
        const pkgJsonPath = path.join(targetDir, 'package.json');
        const pnpmWorkspacePath = path.join(targetDir, 'pnpm-workspace.yaml');
        if (fs.existsSync(pkgJsonPath) && fs.existsSync(pnpmWorkspacePath)) {
          console.log('检测到 package.json 和 pnpm-workspace.yaml 文件，当前为微前端工程，只能创建子工程。');
          const packagesDir = path.join(targetDir, 'packages');
          if (fs.existsSync(packagesDir)) {
            const subProjects = fs.readdirSync(packagesDir, { withFileTypes: true })
              .filter(dirent => dirent.isDirectory())
              .map(dirent => dirent.name);
            console.log('当前 packages 下的子工程名称：', subProjects);
          }
          return ['微前端子工程'];
        }
        return ['微前端工程', '单一前端工程'];
      },
      default: options.projectType,
      validate: input => input ? true : '工程类型为必填项'
    },
    {
      name: 'template',
      type: 'list',
      message: '选择项目脚本类型：',
      choices: ['Vite + TypeScript', 'Vite + JavaScript'],
      default: options.template
    },
    {
      name: 'lowcode',
      type: 'confirm',
      message: '是否启用低代码？',
      default: options.lowcode
    }
  ];

  return inquirer.prompt(questions);
}